package com.zhiyou100.review.day004.homework;

import java.util.Arrays;
import java.util.Date;

/**
 * @packageName: HomeWork1
 * @className: com.zhiyou100.review.day004.homework
 * @Description: TODO 作业1
 * @author: yang
 * @date: 2020/6/4
 */
public class HomeWork1 {
    public static void main(String[] args) {
        int[] ints = {1, 2, 5, 8, 9};
        int[] ints1 = {1, 3, 8, 0, 2, 3, 2};
        int[] ints2 = mergeArray3(ints, ints1);
        System.out.println(Arrays.toString(ints2));

        printGraph();

    }


    /**
     * @Description: TODO 打印图形
     * @name: printGraph
     * @param: []
     * @return: void
     * @date: 2020/6/4 7:34 下午
     * @author: yang
     */
    public static void printGraph() {
        int size = 8;
        if (size % 2 == 0) {
            size++; // 计算菱形大小
        }
        for (int i = 0; i < size / 2 + 1; i++) {
            for (int j = size / 2 + 1; j > i + 1; j--) {
                System.out.print(" ");
                // 输出左上角位置的空白
            }
            for (int j = 0; j < 2 * i + 1; j++) {
                System.out.print("*");
                // 输出菱形上半部边缘
            }
            System.out.println();
            // 换行
        }
        for (int i = size / 2 + 1; i < size; i++) {
            for (int j = 0; j < i - size / 2; j++) {
                System.out.print(" ");
                // 输出菱形左下角空白
            }
            for (int j = 0; j < 2 * size - 1 - 2 * i; j++) {
                System.out.print("*");
                // 输出菱形下半部边缘
            }
            System.out.println(); // 换行
        }
    }


    /**
     * @Description: TODO 合并数组  {1,2,5,8,9}{1,3,8,0,2,3,2}---->{2,5,13,8,11,3,2} 备注：新数组的元素为 这两个数组对应位置处的和
     * @name: mergeArray3
     * @param: [arr1, arr2]
     * @return: int[]
     * @date: 2020/6/4 7:28 下午
     * @author: yang
     */
    public static int[] mergeArray3(int[] arr1, int[] arr2) {
        boolean arr1IsMax;
        // 记录 arr1 是否是长度最大的数组
        // 如果是 值为 true
        // 否则 值为 false
        arr1IsMax = arr1.length > arr2.length;

        if (arr1IsMax) {
            // 如果是 arr1 最长
            for (int i = 0; i < arr1.length; i++) {
                if (i <= arr2.length - 1) {
                    // 在 arr2 下标范围内
                    arr1[i] = arr1[i] + arr2[i];
                }
            }
            return arr1;
        } else {
            // 如果 arr2 最长
            for (int i = 0; i < arr2.length; i++) {
                if (i <= arr1.length - 1) {
                    // 在 arr1 下标内
                    arr2[i] = arr1[i] + arr2[i];
                }
            }
            return arr2;
        }

    }

    /**
     * @Description: TODO  合并数组 {1,2,5,8,9}{1,3,8,0,2,3,2}---->{1,3,8,8,9,3,2} 备注：新数组的元素为 这两个数组对应位置处的大值
     * @name: mergeArray2
     * @param: [arr1, arr2]
     * @return: int[]
     * @date: 2020/6/4 7:09 下午
     * @author: yang
     */
    public static int[] mergeArray2(int[] arr1, int[] arr2) {
        boolean arr1IsMax;
        // 记录 arr1 是否是长度最大的数组
        // 如果是 值为 true
        // 否则 值为 false
        arr1IsMax = arr1.length > arr2.length;

        if (arr1IsMax) {
            // 如果是 arr1 最长
            for (int i = 0; i < arr1.length; i++) {
                if (i <= arr2.length - 1) {
                    // 在 最小长度的数组范围内进行比较
                    if (arr1[i] < arr2[i]) {
                        // 如果
                        arr1[i] = arr2[i];
                    }
                }
            }
            return arr1;
        } else {
            // 如果 arr2 最长
            for (int i = 0; i < arr2.length; i++) {
                // 在 最小长度的数组范围内进行比较
                if (i <= arr1.length - 1) {
                    if (arr1[i] > arr2[i]) {
                        arr2[i] = arr1[i];
                    }
                }
            }
            return arr2;
        }

    }

    /**
     * @Description: TODO  判断从 2000-1-1 开始到 指定的时间是在打鱼还是晒网,打鱼为 true ，晒网为 false
     * @name: threeDaysCatchFishAndTwoDaysDryYourNet
     * @param: [year, month, day]
     * @return: boolean
     * @date: 2020/6/4 6:32 下午
     * @author: yang
     */
    public static boolean threeDaysCatchFishAndTwoDaysDryYourNet(int year, int month, int day) {
        // 计算从 2020-1-1 到今天 2020-6-4 日有多少天
        Date passBy = new Date();
        passBy.setYear(2000 - 1900);
        passBy.setMonth(1 - 1);
        passBy.setDate(1);

        Date now = new Date();
        now.setYear(2020 - 1900);
        now.setMonth(6 - 1);
        now.setDate(4);


        int cntDay = (int) ((now.getTime() - passBy.getTime()) / (1000 * 3600 * 24));
        // 计算毫秒值，获取总共的天数

        int remainder = 5;
        // 对 5 取余，若为 3、4 为晒网，否则为打鱼
        return cntDay % remainder != 3 && cntDay % remainder != 4;
    }


    /**
     * @Description: TODO 合并数组  {1,2,5,8,9}{1,3,0}---->{1,2,5,8,9,1,3,0}
     * @name: mergeArray
     * @param: [arr1, arr2]
     * @return: void
     * @date: 2020/6/4 6:54 下午
     * @author: yang
     */
    public static int[] mergeArray1(int[] arr1, int[] arr2) {

        int[] arr = new int[arr1.length + arr2.length];
        // 创建新的数组
        System.arraycopy(arr1, 0, arr, 0, arr1.length);
        // 拷贝

        for (int i = arr1.length, t = 0; i < arr.length; i++) {
            arr[i] = arr2[t++];
            // 赋值
        }
        return arr;
    }


}
